<?php

namespace app\common\middleware;

use app\app\model\Member;
use app\common\controller\App;
use app\common\utils\Result;
use app\common\model\UserToken;
use think\Controller;

class AppAuth  extends  Controller
{
    // 白名单
    private $_white_url = [
        'index/index',           // 首页
    ];

    //无需验证的控制器
    private $_white_controller = [
        'common','login','register','news'
    ];

    public function handle($request, \Closure $next)
    {

        $user = model("Member");
        $controller = request()->controller();
        if (in_array(strtolower($controller), $this->_white_controller)) {
            return $next($request);
        }

        if (in_array(strtolower($controller), $this->_white_controller)) {
            return $next($request);
        }
        $action = request()->action();
        $rule = strtolower($controller. '/'. $action);
        // 白名单，通过
        if (in_array($rule, $this->_white_url)) {
            return $next($request);
        }


        $token = request()->header('cyaccesstoken');
        if (empty($token)) {

            return json([
            'status' => -99,
            'msg'    => '请先登录',
            'data'   => '请先登录'
        ]);
        }
        $token_info=model("MemberToken")->where(['access_token	'=>$token])->find();
        if (empty($token_info)) {

            return json([
                'status' => -99,
                'msg'    => '请先登录',
                'data'   => '请先登录'
            ]);
        }
        $member=model("Member")->where(['uid'=>$token_info['uid']])->find();
        if (empty($member)){
            return json([
                'status' => -99,
                'msg'    => '用户不存在',
                'data'   => '用户不存在'
            ]);
        }

        return $next($request);
    }

    protected function fail($msg = '失败', $data = [])
    {
        return json([
            'status' => 0,
            'msg'    => $msg,
            'data'   => $data
        ]);
    }


    protected function fails($msg = '失败', $data = [])
    {
        return json([
            'status' => -1,
            'msg'    => $msg,
            'data'   => $data
        ]);
    }



    // 获取当前登录用户的uid
    protected function getUid()
    {
        $uid = model('Member')->getLoginUid();
        $uid = 1;
        return $uid;
    }

    //权限验证
    protected function auth_comfirm($user_info,$rule)
    {

        $auth_list=[
            'shop/itemadd',//创建项目
            'shop/lixiang_save',//项目立项保存
            'shop/item_save',//修改项目概况
            'shop/create_team',//创建队伍
            'cert/cert_list',//项目证件,
            'cert/cert_detail',//相关证照详情
            'cert/cert_save',//保存相关证件
            'cert/identity_card',//提交身份证识别
            'chosepersion/person_list',
            'chosepersion/save2',//保存人员
            'feiyong/add',//添加费用
            'feiyong/save',// 编辑费用
            'feiyong/del',//删除费用
            'jiaotong/add',//添加交通
            'jiaotong/del',//删除交通
            'jiaotong/save',//保存交通
            'shenpi/shenpi_list',//审批列表
            'shenpi/shenpi_result',//审批申请
            'transaction/member_info',//查看人员
            'chosepersion/add_member',//添加人员
            'chosepersion/edit_member',//更换人员

            ];//需要验证权限的地方


        $engineering_auth=[//工程经理权限
            1=>'shop/itemadd',//创建项目
            2=>'shop/lixiang_detail',
            3=>'shop/lixiang_save'
        ];

        $qianshui_zongjian_auth=[//潜水总监权限
            'chosepersion/add_member',//添加人员(潜水员、潜水监督)
            'chosepersion/edit_member'//更换人员(潜水员、潜水监督)
        ];

        $qianshui_jiandu_auth=[//潜水监督权限
            'chosepersion/add_member',//添加人员(潜水员)
            'chosepersion/edit_member',//更换人员(潜水员)
        ];

        if (in_array($rule,$auth_list)){
            switch ($user_info['user_type']){
                case 14://股东   只有查看权限没有任何操作
                    break;
                case 13://工程经理助理   有潜水总监、工程经理的所有权限

                    break;
                case 12://副总经理
                    break;

            }
        }

        return true;

    }

}